package com.un.ebs.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.un.ebs.sys.domain.Function;
import com.un.ebs.sys.dto.FunctionUpdateDto;
import com.un.ebs.sys.dto.FunctionVo;

import java.util.List;

public interface FunctionService {

    /**
     * 新增或修改
     *
     * @param req
     * @return
     */
    String save(FunctionUpdateDto req);

    /**
     * 更新函数内容
     *
     * @param id
     * @param context
     */
    Function updateFunContext(String id, String context);

    /**
     * 删除函数
     *
     * @param id
     */
    void delete(String id);

    /**
     * 删除函数引用的BO对象
     *
     * @param funId
     * @param tableId
     */
    void deleteTable(String funId, String tableId);

    /**
     * 发布函数
     *
     * @param id
     * @param remark
     */
    void release(String id, String remark);

    /**
     * 撤销函数发布
     *
     * @param id
     */
    void releaseCancel(String id);

    void renameTag(String oldName, String newName);

    /**
     * 查询
     *
     * @param searchText 按函数名称、标签名模糊匹配
     * @param tagName    标签名
     * @param pageSize
     * @param pageIndex
     * @return
     */
    IPage<Function> query(String searchText, String tagName, int pageSize, int pageIndex);

    /**
     * 查询，仅反回所有已发布的函数
     *
     * @param tagName
     * @return
     */
    List<Function> queryReleases(String tagName);

    /**
     * 查询指定函数名的历史版本
     *
     * @param funName
     * @return
     */
    List<Function> queryHistory(String funName);

    /**
     * 查询函数详情
     *
     * @param id
     * @return
     */
    FunctionVo queryViewById(String id);

    /**
     * 查询所有标签
     *
     * @return
     */
    List<String> queryTags();
}
